import pandas as pd
# csv_file="input_files/vip_info_100.csv"
excel_file="input_files/stu_info.xlsx"


pd.set_option('display.unicode.east_asian_width', True)
df = pd.read_excel(excel_file)

# 1. 检测重复记录(整行重复)
print("检测整行重复记录:")
print(df.duplicated())  # 标记重复行(True表示重复)

# 2. 检测指定列重复
print("\n检测姓名列重复记录:")
# 检查 "姓名" 列中的重复值，keep=False 表示所有重复项都标记为 True
# 返回: pandas.Series (dtype=bool)
duplicated_names = df.duplicated(subset='姓名', keep=False)

# 从 duplicated_names 中筛选出值为 True 的行，并获取它们的索引
# duplicated_names[duplicated_names] 是一个 Series[bool],从布尔 Series 中筛选出值为 True 的项
# .index 获取这些行的索引标签，返回: pandas.Index
duplicated_index = duplicated_names[duplicated_names].index

# 使用 loc 索引器提取原始 DataFrame 中对应索引的行
# 返回: pandas.DataFrame
duplicated_df = df.loc[duplicated_index]

# 打印所有姓名重复的记录
print(duplicated_df)

# 3. 去除所有重复记录(保留第一个)
print("\n去除所有重复记录后的数据:")
print(df.drop_duplicates())

# 4. 去除学号列重复记录(保留第一个)
print("\n去除学号重复记录后的数据:")
print(df.drop_duplicates(subset='学号'))

# 5. 去除学号和姓名都相同的记录(保留第一个)
print("\n去除学号和姓名都重复的记录:")
df_cleaned = df.drop_duplicates(subset=['学号', '姓名'], keep='first')
print(df_cleaned)
